﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Media;
using System.Windows.Controls;
using System.Windows.Data;

namespace Sherbanov.Helpers
{
    public class WPFHelper
    {
        /// <summary>
        /// Находим родителя нужного нам типа
        /// </summary>
        /// <typeparam name="T">тип родителя</typeparam>
        /// <param name="element">элемент, у которого ищем родителя</param>
        /// <returns>родитель или Null</returns>
        public static T FindVisualParent<T>(UIElement element) where T : UIElement
        {
            UIElement parent = element;
            while (parent != null)
            {
                T correctlyTyped = parent as T;
                if (correctlyTyped != null)
                {
                    return correctlyTyped;
                }

                parent = VisualTreeHelper.GetParent(parent) as UIElement;
            }
            return null;
        }

        /// <summary>
        /// Возвращает имя прибинденного XML свойства, по которому дальше можно получать значения
        /// </summary>
        /// <param name="c"></param>
        /// <returns>если ничего не нашли, вернем пустую строку</returns>
        public static string getColumnName(DataGridColumn c)
        {
            if (c != null)
            {
                if (c is DataGridBoundColumn)
                {
                    Binding b = (Binding)(c as DataGridBoundColumn).Binding;
                    string path = b.XPath;
                    return path;
                }
                if (c is DataGridTemplateColumn)
                {
                    return (c as DataGridTemplateColumn).SortMemberPath;
                }
            }
            return string.Empty;
        }


    }
}
